package com.itcp.itelpicture.utils;

import com.itcp.itelpicture.domain.po.User;
import com.itcp.itelpicture.domain.vo.UserVO;

/**
 * 基于ThreadLocal的用户信息存储工具类
 */
public class UserHolder {

    /**
     * 使用ThreadLocal存储用户信息，确保线程安全
     */
    private static final ThreadLocal<UserVO> USER_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 存储用户信息到当前线程
     * 
     * @param userVo 当前登录用户信息
     */
    public static void saveUser(UserVO userVo) {
        USER_THREAD_LOCAL.set(userVo);
    }

    /**
     * 获取当前线程中的用户信息
     * 
     * @return 当前登录用户信息
     */
    public static UserVO getUser() {
        return USER_THREAD_LOCAL.get();
    }

    /**
     * 清除当前线程中的用户信息
     * 注意：在用户登出或请求完成时应该调用此方法，避免内存泄漏
     */
    public static void removeUser() {
        USER_THREAD_LOCAL.remove();
    }
}